package org2.jogo.activities;

import android.content.DialogInterface;
import android.content.Intent;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ListView;
import android.widget.LinearLayout;
import android.widget.TextView;
import org2.jogo.Global;
import org2.jogo.R;
import org2.jogo.Utils;

public class OpcoesActivity extends GameActivity {

    /*
     * Nessa tela o jogador vai poder escolher algumas opções de jogo, como a dificuldade padrão, o som, se ele quer
     * jogar com perguntas que ele mesmo criou, e vai poder também cadastrar novas perguntas
     */

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        ListView lista = (ListView) findViewById(R.id.listaOpcoes);
        lista.setAdapter(new OpcoesListaAdapter());
    }

    @Override
    protected int getContentView() {
        return R.layout.opcoes;
    }

    @Override
    protected int getMusicaFundo() {
        return 0;
    }

    @Override
    protected String getTitulo() {
        return "Opções";
    }

    public class OpcoesListaAdapter extends BaseAdapter {

        private String[] itens;

        public OpcoesListaAdapter() {
            itens =
                    new String[] { "Criar novas perguntas", "Jogar com perguntas criadas", "Habilitar sons",
                            "Dificuldade padrão: " };
        }

        public int getCount() {
            return itens.length;
        }

        public Object getItem(int position) {
            return itens[position];
        }

        public long getItemId(int position) {
            return position;
        }

        public View getView(int position, View convertView, ViewGroup parent) {
            LinearLayout view;
            int layout = R.layout.opcoes_item_normal;
            if (position == 1 || position == 2)
                layout = R.layout.opcoes_item_check;
            view = getViewConvertida(convertView, OpcoesActivity.this, layout);
            String item = (String) getItem(position);
            switch (position) {
            case 0:
                criarPerguntas(view, item);
                break;
            case 1:
                habilitarPerguntasCustom(view, item);
                break;
            case 2:
                habilitarSom(view, item);
                break;
            case 3:
                mudarDificuldade(view, item);
                break;
            }
            return (View) view;
        }

        public void habilitarSom(LinearLayout view, String item) {
            CheckBox checkSom = (CheckBox) view.findViewById(R.id.checkItem);
            checkSom.setText(item);
            checkSom.setChecked(Global.sonsHabilitados);
            checkSom.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    Global.gravarSomHabilitado(isChecked);
                }
            });
        }

        public void habilitarPerguntasCustom(LinearLayout view, String item) {
            CheckBox checkCustom = (CheckBox) view.findViewById(R.id.checkItem);
            checkCustom.setText(item);
            checkCustom.setChecked(Global.jogaComCustom);
            checkCustom.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    Global.gravarJogaCustom(isChecked);
                }
            });
        }

        public void mudarDificuldade(LinearLayout view, final String item) {
            final TextView txtDificuldade = (TextView) view.findViewById(R.id.labelItem);
            final String[] itens = new String[] { "Fácil", "Normal", "Difícil" };
            int padrao = Global.dificuldadePadrao;
            txtDificuldade.setText(item + itens[padrao - 1]);
            txtDificuldade.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    OnClickListener clickAction = new OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            Global.gravarDificuldadePadrao(which + 1);
                            txtDificuldade.setText(item + itens[which]);
                        }
                    };
                    Utils.exibirListaDeSelecao(OpcoesActivity.this, "Selecione a dificuldade:", itens, clickAction);
                }
            });
        }

        public void criarPerguntas(LinearLayout view, String item) {
            TextView txtCriar = (TextView) view.findViewById(R.id.labelItem);
            txtCriar.setText(item);
            txtCriar.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    startActivity(new Intent(OpcoesActivity.this, NovaPerguntaActivity.class));
                }
            });
        }
    }
}
